package exception;

/**
 * @author Luka
 * @date 2021/05/31 15:20
 *
 * 异常处理机制中的try-catch
 * 语法:
 * try{
 *     可能出现异常的代码片段
 * }catch(xxxxException e){
 *     try中出现xxxxException后的处理代码
 * }
 *
 **/
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始!");

        try {
    //        String str = null;
            //String str = "";
            String str = "a";
            int num = Integer.parseInt("str");
        /*
            当JVM执行到某一句代码发现这里出现异常时,会实例化一个队形的异常实例
            并将当前程序执行过程设置到其中,此时该异常就表示当前这里出现的问题了
            之后虚拟机会将其抛出
         */
            System.out.println(str.length());
            System.out.println(num);
            System.out.println(str.charAt(0));
            /*
                try语句块中报错代码以下的内容完全不会执行
             */
            System.out.println("!!!!!!!!!!!!");
        }catch (NullPointerException e){
            System.out.println("出现空指针异常");
        }catch (StringIndexOutOfBoundsException e){
            System.out.println("下标越界异常");
            /*
                最后一个catch可以捕捉Exception,防止因为一个未处理的异常中断
             */
        }catch (NumberFormatException e){
            System.out.println("数字格式异常");

        } catch (Exception e){
            System.out.println("反正有个错");
        }

        System.out.println("结束结束");
    }
}